#ifndef __INPUT_H_
#define __INPUT_H_

#define CONFIG_INPUT_MAX_NR 3

#define NULL    0

typedef void (*input_irq_handler)(void);

typedef struct{
    void (*enable_input_scan)(void);
    void (*disable_input_scan)(void);

}input_scan_t;

typedef struct {
    input_scan_t input_scan[CONFIG_INPUT_MAX_NR];
    int size;
    volatile int happen;
}input_dev_t;

void input_scan_stop(void);
void input_scan_start(void);
int input_dev_register(void *enable_func, void *disable_func, input_irq_handler *irq_func);


#define DECLARE_INPUT_IRQ(s)    \
        static input_irq_handler s##input;\
        static input_irq_handler *s = &(s##input);

#define INPUT_DEV_REGISTER(FUNC1, FUNC2, FUNC3) \
    static int my_dev_register(void)\
    {\
                    input_dev_register(FUNC1, FUNC2, FUNC3);\
                    return 0;\
    }\
    late_initcall(my_dev_register);




#endif

